package org.vaadin.vaadinjit.data;

/**
 * Interface for the data structure for tree visualizations
 * 
 * @author jonkka
 *
 */
public interface JitTreeData extends JitData {

	
	/**
	 * Get the ID of the node
	 * 
	 * @return the ID of the node
	 */
	public String getId();
	
	
	/**
	 * Get the name of the node
	 * 
	 * @return the name of the node
	 */
	public String getName();
	
	
	/**
	 * 
	 * @return
	 */
	public JitTreeData getParent();
	
	
	/**
	 * Set the parent node of this node
	 * 
	 * @param parent the parent node
	 */
	public void setParent(JitTreeData parent);
	
	
	/**
	 * Add a child (subtree) to the node
	 * 
	 * @param subTree the subtree to add as child to the node
	 */
	public void addChild(JitTreeData subTree);
	
	
	/**
	 * Remove a child (subtree) from the node
	 * 
	 * @param subTree the subtree to remove from the node
	 */
	public void removeChild(JitTreeData subTree);
	
	
	
}
